package com.mvwchina.common.utils;

import com.fasterxml.jackson.annotation.JsonIgnore;
import lombok.Data;
import org.apache.commons.lang3.StringUtils;


/**
 * $.ajax后需要接受的JSON
 *
 * @author
 */
@Data
public class AjaxJson<T> {

    private boolean success = false;// 是否成功
    private int errorCode = -1;//错误代码 -1 完全成功
    private String msg = "操作成功";// 提示信息
    private T body;//封装json的map

    @JsonIgnore//返回对象时忽略此属性
    public String getJsonStr() {//返回json字符串数组，将访问msg和key的方式统一化，都使用data.key的方式直接访问。

        String json = JsonMapper.getInstance().toJson(this);
        return json;
    }

    public void setResult(int code, String message,T obj){
        this.setErrorCode(code);
        this.setMsg(message);
        this.setBody(obj);
    }

    public AjaxJson tokenFail(){
        this.setErrorCode(ErrorCode.LOGIN_INVALID);
        this.setMsg("登陆失效");
        return this;
    }

    public AjaxJson buildSuccess(){
        this.setSuccess(true);
        this.setErrorCode(ErrorCode.SUCCESS);
        return this;
    }

    public void buildSuccess(T obj,String message){
        this.setSuccess(true);
        this.setErrorCode(ErrorCode.SUCCESS);
        if (StringUtils.isNoneBlank(message)){
            this.setMsg(message);
        }
        this.setBody(obj);
    }

    public void buildError(){
        this.setErrorCode(ErrorCode.SERVER_ERROR);
        this.setMsg("系统异常");
    }
}
